package com.gestion.dao;

import com.gestion.dao.interfaces.IClienteDAO;
import com.gestion.dao.interfaces.IItemPedidoDAO;
import com.gestion.dao.interfaces.IPagoDAO;
import com.gestion.dao.interfaces.IPedidoDAO;
import com.gestion.dao.interfaces.IUsuarioDAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @author Mauri@<itsoluciones.com.ar>
 */
public class FabricaDAO {

    /**
     * Driver de la base de datos MySQL
     */
    public static final String DRIVER = "com.mysql.jdbc.Driver";

    /**
     * Constructor de la Fábrica
     */
    public FabricaDAO() {
        // System.out.println(this.toString());
    }

    /**
     * Retorna la Conexión a la Base de Datos
     *
     * @return Retorna la Conexión a la Base de Datos
     */
    public static Connection getConnection() {
        try {
            String user = "root";
            //fer
            //String password = "31284081";
            //mauri
            String password = "";
            String puerto = "3306";
            String catalogo = "gestionEntrega";
            String host = "localhost";
            String urlConexion = "jdbc:mysql://" + host + ":" + puerto + "/" + catalogo;
            Class.forName(DRIVER);
            return DriverManager.getConnection(urlConexion, user, password);
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            System.out.println(ex.getMessage());
        }
        return null;
    }

    /**
     * Retorna la Conexión a la Base de Datos
     *
     * @return Retorna la Conexión a la Base de Datos
     */
    public Connection getConnect() {
        return getConnection();
    }

    /**
     * Retorna la interfaz ICliente
     *
     * @return Retorna la interfaz ICliente
     */
    public IClienteDAO getClienteDAO() {
        return ClienteDAO.getInstancia();
    }

    /**
     * Retorna la interfaz
     *
     * @return dRetorna la interfaz ItemPedido
     */
    public IItemPedidoDAO getItemPedidoDAO() {
        return ItemPedidoDAO.getInstancia();
    }

    /**
     * Retorna la interfaz
     *
     * @return Retorna la interfaz IPago
     */
    public IPagoDAO getPagoDAO() {
        return PagoDAO.getInstancia();
    }

    /**
     * Retorna la interfaz
     *
     * @return Retorna la interfaz IPedido
     */
    public IPedidoDAO getPedidoDAO() {
        return PedidoDAO.getInstancia();
    }

    /**
     * Retorna la interfaz
     *
     * @return Retorna la interfaz IUsuario
     */
    public IUsuarioDAO getUsuarioDAO() {
        return UsuarioDAO.getInstancia();
    }
}